home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-04-20 | 60.2 KB | 1,653 lines |
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
-
-
-
-
-
-
- Telnet Data Entry Terminal Option
-
-
-
- 1. Command Name and code:
-
- DET 20
-
-
- 2. Command Meanings
-
- IAC WILL DET
- The sender of this command REQUESTS or AGREES to send and
- receive subcommands to control the Data Entry Terminal.
-
- IAC WONT DET
- The sender of this command REFUSES to send and receive
- subcommands to control the Data Entry Terminal.
-
- IAC DO DET
- The sender of this command REQUESTS or AGREES to send and
- receive subcommands to control the Data Entry Terminal.
-
- IAC DONT DET
- The sender of this command REFUSES to send and receive
- subcommands to control the Data Entry Terminal.
-
- The DET option uses five classes of subcommands 1) to
- establish the requirements and capabilities of the
- application and the terminal, 2) to format the screen, and
- to control the 3) edit, 4) erasure, and 5) transmission
- functions. The subcommands that perform these functions are
- described below.
-
-
- T__h_e_N__e_t_w_o_r_k_V__i_r_t_u_a_l_D__a_t_a_E__n_t_r_y_T__e_r_m_i_n_a_l(NVDET)
-
- The NVDET consists of a keyboard and a rectangular
- display. The keyboard is capable of generating all of
- the characters of the ASCII character set. In addition,
- the keyboard may possess a number of function keys which
- when pressed cause a FN subcommand to be sent. (Although
- most DET's will support one or more peripheral devices
- such as a paper tape reader or a printer, this option
-
-
- 1
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- does not consider their support. Support of peripheral
- devices should be treated by a separate option.)
-
- The screen of the data entry terminal is a rectangle M
- characters by N lines. The values of M and N are set by
- negotiating the Output Line Width and Output Page Size
- options, respectively. The next writing position (x,y)
- on the screen (where x is the character position and y is
- the position of the line on the screen) is indicated by a
- special display character called the cursor. The cursor
- may be moved to any position on the screen without
- disturbing any characters already on the screen. Cursor
- addressing in existing terminals utilizes several
- topologies and addressing methods. In order to make the
- burden of implementaton as easy as possible this protocol
- supports two topologies (the finite plane and the helical
- torus) and three addressing methods ((x,y); x and y, and
- relative increments). Since the finite plane with
- absolute addressing is the least ambiguous and the
- easiest to translate to and from the others, it is the
- default scheme used by the NVDET. The torodial form with
- either relative or absolute addressing is provided for
- convience.
-
- Also the NVDET provides a mechanism for defining on the
- screen fields with special attributes. For example,
- characters entered into these fields may be displayed
- with brighter intensity, highlighted by reverse video or
- blinking, or protected from modification by the user.
- This latter feature is one of the most heavily used for
- applications where the DET displays a form to be filled
- out by the user.
-
- The definition of the NVDET uses Telnet option
- subnegotiations to accomplish all of its functions.
- Since none of the ASCII characters sent in the data
- stream have been used to define these functions, the DET
- option can be used in a "raw" or even "rare" mode. In
- circumstances where the application program knows what
- kind of terminal is on the other end, it can send the
- ASCII characters required to control functions not
- supported by the option or an implementation. In general
- keeping all NVDET functions out of the data stream
- provides better flexibility.
-
- F__a_c_i_l_i_t_y_F__u_n_c_t_i_o_n_s (for detailed semantics see Section 5.)
-
- IAC SB DET <DET facility subcommand><facility map> IAC SE
-
- where <DET facility subcommand> is one 8-bit byte
-
-
- 2
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- indicating the class of the facilities to be described,
- and <facility map> is a field of one or two 8-bit bytes
- containing flags describing the facilities required or
- desired by the sender. The bits of the facility maps are
- numbered from the right starting at zero. Thus, if bit 2
- is set the field will have a decimal value of 4. The
- values of the field are as follows:
-
- facility cmd: EDIT FACILITIES subcommand code: 1
- facility map: bit numbers
- Toroidal Cursor Addressing 6
- Incremental Cursor Addressing 5
- Read Cursor Address 4
- Line Insert/Delete 3
- Char Insert/Delete 2
- Back Tab 1
- Positive Addressing only 0
-
- where:
-
- If the Toroidal Cursor Addressing bit is set, the sender
- requests or provides that the SKIP TO LINE and SKIP TO
- CHAR subcommands be supported.
-
- If the Incremental Cursor Addressing bit is set, the
- sender requests or provides that the UP, DOWN, LEFT, and
- RIGHT subcommands be supported.
-
- If the Read Cursor bit is set, the sender requests or
- provides the READ CURSOR subcommand.
-
- If the Line Insert/Delete bit is set, the sender requests
- or provides that the LINE INSERT and LINE DELETE
- subcommands be supported.
-
- If the Char Insert/Delete bit is set, the sender requests
- or provides that the CHAR INSERT and CHAR DELETE
- subcommands be supported.
-
- If the Back Tab bit is set, the sender requests or
- provides that the BACK TAB subcommand be supported.
-
- If the Positive Addressing bit is set, then the sender is
- informing the receiver that it can only move the cursor
- in the positive direction. (Note: Terminals that have
- this property also have a Home function to get back to
- the beginning.)
-
- facility cmd: ERASE FACILITIES subcommand code: 2
- facility map: bit numbers
-
-
- 3
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- Erase Field 4
- Erase Line 3
- Erase Rest of Screen 2
- Erase Rest of Line 1
- Erase Rest of Field 0
-
- where:
-
- If a bit of the facility map for this facility command is
- set, the sender requests or provides the facility
- indicated by the bit. For a more complete description of
- each of these functions see the Erase Functions section
- below.
-
- facility cmd: TRANSMIT FACILITIES subcommand code: 3
- facility map: bit numbers
- Data Transmit 5
- Transmit Line 4
- Transmit Field 3
- Transmit Rest of Screen 2
- Transmit Rest of Line 1
- Transmit Rest of Field 0
-
- where:
-
- If a bit of the facility map for this facility command is
- set, the sender requests or provides the facility
- indicated by the bit. For a more complete description of
- each of these functions see the Transmit Functions
- section below.
-
- facility cmd: FORMAT FACILITIES subcommand code: 4
- facility map: bit numbers
- byte 0
- Repeat 4
- Blinking 3
- Reverse Video 2
- Right Justification 1
- Overstrike 0
-
- byte 1
- Protection On/Off 6
- Protection 5
- Alphabetic-only Protection 4
- Numeric-only Protection 3
- Intensity 0-2
-
- where:
-
- If the Repeat bit is set the sender requests or provides
-
-
- 4
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- the REPEAT subcommand.
-
- If the Blinking bit is set, the sender requests or
- provides the ability to highlight a string of characters
- by causing them to blink.
-
- If the Reverse Video bit is set, the sender requests or
- provides the ability to highlight a string of characters
- by "reversing the video image," i.e., if the characters
- are normally displayed as black characters on a white
- background, this is reversed to be white characters on a
- black background, or vice versa.
-
- If the Right Justification bit is set, the sender
- requests or provides the ability to cause entries of data
- to be right justified in the field.
-
- If the Overstrike bit is set, the sender requests or
- provides the ability to superimpose one character over
- another on the screen much like a hard copy terminal
- would do if the print mechanism struck the same position
- on the paper with different characters.
-
- If the Protection On/Off bit is set, the sender requests
- or provides the ability to turn on and off field
- protection.
-
- If the Protection bit is set, the sender requests or
- provides the ability to protect certain strings of
- characters displayed on the screen from being altered by
- the user of the terminal. Setting this bit also implies
- that ERASE UNPROTECTED and TRANSMIT UNPROTECTED
- subcommands (see below) are supported.
-
- If the Alphabetic-only Protection bit is set, the sender
- requests or provides the ability to constrain the user of
- the terminal such that he may only enter alphabetic data
- into certain areas of the screen.
-
- If the Numeric-only Protection bit is set, the sender
- requests or provides the ability to constrain the user of
- the terminal such that he may only enter numerical data
- into certain areas of the screen.
-
- The three bits of the Intensity field will contain a
- positive binary integer indicating the number of levels
- of intensity that the sender requests or provides for
- displaying the data. The value of the 3 bit field should
- be interpreted in the following way:
-
-
-
- 5
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- 1 one visible intensity
- 2 two intensities; normal and bright
- 3 three intensities; off, normal, and bright
- >3 >3 intensities; off, and the remaining levels
- proportioned from dimmest to brightest intensity.
-
- For the all of the above commands, if the appropriate bit
- in <facility map> is not set, then the sender does not
- request or provide that facility.
-
-
- E__d_i_t_i_n_g_F__u_n_c_t_i_o_n_s
-
- IAC SB DET MOVE CURSOR <x><y> IAC SE subcommand code: 5
-
- where <x> is an 8-bit byte containing a positive binary
- integer representing the character position of the
- cursor, <y> is an 8-bit byte containing a positive binary
- integer representing the line position of the cursor.
-
- This subcommand moves the cursor to the absolute screen
- address (x,y) with the following boundary conditions:
-
- if x>M-1, set x=M-1 and send an ERROR subcommand
- if y>N-1, set y=N-1 and send an ERROR subcommand
-
- This describes a finite plane topology on the screen.
-
- IAC SB DET SKIP TO LINE <y> IAC SE subcommand code: 6
-
- where <y> is a positive 8-bit binary number.
-
- This subcommand moves the cursor to the absolute screen
- line y. x remains constant. For values of y>N-1
- y = y mod N.
-
- IAC SB DET SKIP TO CHAR <x> IAC SE subcommand code: 7
-
- where <x> is a positive 8-bit binary number.
-
- This subcommand moves the cursor to the absolute
- character position x. y remains constant, unless x>M-1
- in which case:
- x' = (x mod M)
- y' = (y+(x DIV N))
- where x' and y' are the new values of the cursor.
-
- These last two subcommands define a toroidal topology on
- the screen.
-
-
-
- 6
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- IAC SB DET UP IAC SE subcommand code: 8
- IAC SB DET DOWN IAC SE subcommand code: 9
- IAC SB DET LEFT IAC SE subcommand code: 10
- IAC SB DET RIGHT IAC SE subcommand code: 11
-
- These subcommands are provided as a convenience for some
- terminals. The commands UP, DOWN, LEFT, and RIGHT are
- defined as
-
- UP: (x,y)=(x, y-1 mod N)
- DOWN: (x,y)=(x, y+1 mod N)
- LEFT: (x,y)=(x-1, y); if x=0 then x-1 = 0
- RIGHT: (x,y)=(x+1 mod M, y) and y = y+1 if x+1>M-1
-
- Note: DOWN, LEFT, and RIGHT cannot always be replaced by
- the ASCII codes for linefeed, backspace, and space
- respectively. The latter are format effectors while the
- former are cursor controls.
-
- IAC SB DET HOME IAC SE subcommand code: 12
-
- This subcommand positions the cursor to (0,0). This is
- equivalent to a MOVE CURSOR 0,0 or the sequence SKIP TO
- LINE 0, SKIP TO CHAR 0. This subcommand is provided for
- convenience, since most terminals have it as a separate
- control.
-
- IAC SB DET LINE INSERT IAC SE subcommand code: 13
-
- This subcommand inserts a line of spaces between lines y
- (the current line, determined by the position of the
- cursor) and line y-1. Lines y through N-2 move down one
- line, i.e. line y becomes line y+1; y+1 becomes y+2,
- ...; N-2 becomes N-1. Line N-1 is lost off the bottom of
- the screen. The position of the cursor remains
- unchanged.
-
- IAC SB DET LINE DELETE IAC SE subcommand code: 14
-
- This subcommand deletes line y where y is the current
- line position of the cursor. Lines y+1 through N-1 move
- up one line, i.e. line y+1 becomes line y; y+2 becomes
- y+1; ...; N-1 becomes N-2. The N-1st line position is
- set to all spaces. The cursor position remains
- unchanged.
-
- IAC SB DET CHAR INSERT IAC SE subcommand code: 15
-
- This subcommand inserts the next character in the data
- stream between the xth and x-1st characters, where x is
-
-
- 7
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- the current character position of the cursor. The xth
- through M-2nd characters on the line are shifted one
- character positon to the right. The new character is
- inserted at the vacated xth position. The M-1st
- character is lost. The position of the cursor remains
- unchanged.
-
- IAC SB DET CHAR DELETE IAC SE subcommand code: 16
-
- This subcommand deletes the character on the screen at
- the x-th position. The x-th character is removed and the
- characters x+1 through M-1 are shifted one character
- position to the left to become the x-th through M-2nd
- characters. The M-1st character position is left empty.
- (For most terminals it will be set to a NUL or space.)
- The cursor position remains unchanged.
-
- IAC SB DET READ CURSOR IAC SE subcommand code: 17
-
- This subcommand requests the receiver to send the present
- position of the cursor to the sender.
-
- IAC SB DET CURSOR POSITION <x><y> IAC SE
- subcommand code: 18
-
- where <x> and <y> are positive 8-bit binary integers.
-
- This subcommand is sent by a Telnet implementation in
- response to a READ CURSOR subcommand to convey the
- coordinates of the cursor to the other side. Note: x is
- less than M and y is less than N.
-
- IAC SB DET REVERSE TAB IAC SE subcommand code: 19
-
- This subcommand causes the cursor to move to the previous
- tab position. If none exists on the present line, the
- cursor moves to the previous line and so on until a tab
- is found or the address (0,0) is encountered. When field
- protection is in effect the cursor moves to the beginning
- of the preceding unprotected field.
-
- T__r_a_n_s_m_i_t_F__u_n_c_t_i_o_n_s (For detailed semantics see Section 5.)
-
- IAC SB DET TRANSMIT SCREEN IAC SE subcommand code: 20
-
- This subcommand causes the terminal to transmit all
- characters on the screen from position (0,0) to
- (M-1,N-1). The cursor will be at (0,0) after the
- operation is complete.
-
-
-
- 8
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- IAC SB DET TRANSMIT UNPROTECTED IAC SE
- subcommand code: 21
-
- This subcommand causes the terminal to transmit all
- characters in unprotected fields from position (0,0) to
- (M-1,N-1). The unprotected fields are separated by the
- field separator subcommand. The cursor will be at (0,0)
- or at the beginning of the first unprotected field after
- the operation is complete.
-
- IAC SB DET TRANSMIT LINE IAC SE subcommand code: 22
-
- This subcommand causes the terminal to transmit all data
- on the yth line where y is determined by the present
- position of the cursor. Data is sent from character
- position (0,y) to the end-of-line or position (M-1,y)
- whichever comes first. The cursor position after the
- transmission is one character position after the end of
- line condition or the beginning of the next line,
- (0,y+1).
-
- IAC SB DET TRANSMIT FIELD IAC SE subcommand code: 23
-
- This subcommand causes the terminal to transmit all data
- in the field presently occupied by the cursor. The
- cursor position after the operation is complete is one
- character position after the end of the field or, if that
- position is protected, at the beginning of the next
- unprotected field.
-
- IAC SB DET TRANSMIT REST OF SCREEN IAC SE
- subcommand code: 24
-
- This subcommand causes the terminal to transmit all
- characters on the screen from position (x,y) to (M-1,N-1)
- or until the end of text. (x,y) is the current cursor
- position. The cursor position after the operation is one
- character position after the last text character, or
- (0,0) if the last filled character position is (M-1,N-1).
-
- IAC SB DET TRANSMIT REST OF LINE IAC SE
- subcommand code: 25
-
- This subcommand causes the terminal to transmit all
- characters on the yth line from position (x,y) to the end
- of line or (M-1,y) whichever comes first. (x,y) is the
- current cursor position. The cursor position after the
- operation is one character position after the last
- character of the line or the first character of the next
- line.
-
-
- 9
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
-
- IAC SB DET TRANSMIT REST OF FIELD IAC SE
- subcommand code: 26
-
- This subcommand causes the receiver to transmit the rest
- of the characters in the field currently occupied by the
- cursor. The cursor position after the operation is at
- the beginning of the next field.
-
- IAC SB DET DATA TRANSMIT <x><y> IAC SE
- subcommand code: 27
-
- This subcommand is used to preface data sent from the
- terminal in response to a user action or a TRANSMIT
- command. The parameters <x> and <y> indicate the initial
- position of the cursor. See the Transmit Subcommands
- subsection in Section 5 for more details.
-
-
- E__r_a_s_e_F__u_n_c_t_i_o_n_s
-
- IAC SB DET ERASE SCREEN IAC SE subcommand code: 28
-
- This subcommand causes all characters to be removed from
- the screen. All fields regardless of their attributes
- are deleted. The cursor position after the operation
- will be (0,0). Most terminals set the erased characters
- to either NUL or space characters.
-
- IAC SB DET ERASE LINE IAC SE subcommand code: 29
-
- This subcommand causes all characters on the yth line to
- be removed from the screen, where y is the line of the
- current cursor position. All fields regardless of their
- attributes are deleted. The cursor position after this
- operation will be (0,y). Note: This operation can be
- easily simulated by the sequence: LINE DELETE, LINE
- INSERT. However, the order is important to insure that
- no data is lost off the bottom of the screen.
-
- IAC SB DET ERASE FIELD IAC SE subcommand code: 30
-
- This subcommand causes all characters in the field
- occupied by the cursor to be removed. The cursor
- position after the operation is at the beginning of the
- field.
-
- IAC SB DET ERASE REST OF SCREEN IAC SE
- subcommand code: 31
-
-
-
- 10
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- This subcommand causes all characters from position (x,y)
- to (M-1,N-1) to be removed from the screen. All fields
- regardless of their attributes are deleted. The cursor
- position after the operation is unchanged. This is
- equivalent to doing an ERASE REST OF LINE plus a LINE
- DELETE for lines greater than y.
-
- IAC SB DET ERASE REST OF LINE IAC SE
- subcommand code: 32
-
- This subcommand causes all characters from position (x,y)
- to (M-1,y) to be removed from the screen All fields
- regardless of their attributes are deleted. The cursor
- position after the operation is unchanged.
-
- IAC SB DET ERASE REST OF FIELD IAC SE
- subcommand code: 33
-
- This subcommand causes all characters from position (x,y)
- to the end of the current field to be removed from the
- screen. The cursor position after the operation is
- unchanged.
-
- IAC SB DET ERASE UNPROTECTED IAC SE
- subcommand code: 34
-
- This subcommand causes all characters on the screen in
- unprotected fields to be removed from the screen. The
- cursor position after the operation is at (0,0) or, if
- that position is protected, at the beginning of the first
- unprotected field.
-
- F__o_r_m_a_t_F__u_n_c_t_i_o_n_s
-
- IAC SB DET FORMAT DATA <format map><count> IAC SE
- subcommand code: 35
-
- where <format map> is an 8-bit byte containing the
- following flags:
-
- Blinking 7
- Reverse Video 6
- Right Justification 5
- Protection 3-4
- Intensity 0-2
-
- where:
-
- If the Blinking bit is set, the following field of
- <count> characters should have the Blinking attribute
-
-
- 11
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- applied to it by the receiver.
-
- If the Reverse Video bit is set, the following field of
- <count> characters should be displayed by the receiver
- with video reversed.
-
- If the Right Justification bit is set, the input entered
- into the field of <count> characters should be right
- justified.
-
- The Protection field is two bits wide and may take on the
- following values:
-
- 0 no protection
- 1 protected
- 2 alphabetic only
- 3 numeric only
-
- The protection attribute specifies that the other side
- may modify any character (no protection), modify no
- characters (protected), enter only alphabetical
- characters (A-Z, and a-z) (alphabetic only), or enter
- only numerical characters (0-9,+,.,and -) (numeric only)
- in the following field of <count> bytes.
-
- The Intensity field is 3 bits wide and should be
- interpreted in the following way:
-
- The values 0-6 should be used as an indication of the
- relative brightness to be used when displaying the
- characters in or entered into the following field <count>
- characters wide. The number of levels of brightness
- available should have been obtained previously by the
- Format Facility subcommand. The exact algorithm for
- mapping these values to the available levels of intensity
- is left to the implementors. A value of 7 in the
- intensity field indicates that the brightness should be
- off, and any characters in or entered into the field
- should not be displayed.
-
- <count> is 2 bytes that should be interpreted as a
- positive 16-bit binary integer representing the number of
- characters following this command which are affected by
- it.
-
- Data sent to the terminal or the Using Host for unwritten
- areas of the screen not in the scope of the count should
- be displayed with the default values of the format map.
- The default values are No Blinking, Normal Video, No
- Justification, No Protection and Normal Intensity.
-
-
- 12
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
-
- This subcommand is used to format data to be displayed on
- the screen of the terminal. The <format map> describes
- the attributes that the field <count> bytes wide should
- have. This field is to start at the position of the
- cursor when the command is acted upon. The next <count>
- displayable characters in the data stream are used to
- fill the field. Subsequent REPEAT subcommands may be
- used to specify the contents of this field. If the
- sender specifies attributes that have not been agreed
- upon by the use of the Format Facility subcommand, the
- Telnet process should send an Error Subcommand to the
- sender, but format the screen as if the bit had not been
- set.
-
- IAC SB DET REPEAT <count><char> IAC SE
- subcommand code: 36
-
- where <count> is a positive 8-bit binary integer.
- <char> is an 8-bit byte containing an ASCII character.
-
- This subcommand is used to perform data compression on
- data being transferred to the terminal by encoding
- strings of identical characters as the character and a
- count. The repeated characters may be part of a field
- specified
-
- IAC SB DET SUPPRESS PROTECTION <negotiation> IAC SE
- subcommand code: 37
-
- where <negotiation> may have the values of the Telnet
- option negotiation:
-
- 251 WILL
- 252 WONT
- 253 DO
- 254 DONT
-
- This subcommand is used to suppress the field protection
- in a non-destructive manner. Many data entry terminals
- provide the means by which protection may be turned on
- and off without modifying the contents of the screen or
- the terminal's memory. Thus, the protection may be
- turned off and back on without retransmitting the form.
- The default setting of the option is that protection is
- on, in other words
-
- IAC SB DET SUPPRESS PROTECTION WONT IAC SE
- IAC SB DET SUPPRESS PROTECTION DONT IAC SE
-
-
-
- 13
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- Negotiation of this subcommand follows the same rules as
- negotiations of the Telnet options.
-
- IAC SB DET FIELD SEPARATOR IAC SE subcommand code: 38
-
- It is necessary when transmitting only the unprotected
- portion of the screen to provide a means for delimiting
- the fields. Existing DET's use a variety of ASCII
- characters such as Tab, Group Separator, Unit Separator,
- etc. In order to maintain transparency of the NVDET this
- subcommand is used to separate the fields. Clearly, this
- incurs rather high overhead. This overhead can be
- avoided by using the Byte Macro Option (see Appendix 3).
-
- M__i_s_c_e_l_l_a_n_e_o_u_s_C__o_m_m_a_n_d_s
-
- IAC SB DET FN <code> IAC SE subcommand code: 39
-
- where: <code> is one byte.
-
- Many data-entry terminals provide a set of "function"
- keys which when pressed send a one-character command to
- the server. This subcommand describes such a facility.
- The values of the <code> field are defined by the user
- and server. The option merely provides the means to
- transfer the information.
-
- IAC SB DET ERROR <cmd> <error code> IAC SE
- subcommand code: 40
-
- where:
- <cmd> is a byte containing the subcommand code of
- the subcommand in error.
- <error code> is a byte containing an error code.
- (For a list of the defined error codes see Appendix 2.)
-
- This subcommand is provided to allow DET option
- implementations to report errors they detect to the
- corresponding Telnet process. At this point it is worth
- reiterating that the philosophy of this option is that
- when an error is detected it should be reported; however,
- the implementation should attempt its best effort to
- carry out the intent of the subcommand or data in error.
-
-
-
-
-
-
-
-
-
- 14
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- 3. Default and Minimal Implementation Specifications
-
- D__e_f_a_u_l_t
-
- WON'T DET -- DON'T DET
-
- Neither host wishes to use the Data Entry Terminal option.
-
- M__i_n_i_m_a_l_I__m_p_l_e_m_e_n_t_a_t_i_o_n
-
- DET EDIT FACILITIES
- DET ERASE FACILITIES
- DET TRANSMIT FACILITIES
- DET FORMAT FACILITIES
- DET MOVE CURSOR <x><y>
- DET HOME
- DET ERASE SCREEN
- DET TRANSMIT SCREEN
- DET FORMAT DATA
- DET ERROR <cmd> <error code>
-
- In the case of formatting the data, the minimal
- implementation should be able to support a low and high
- level of intensity and protection for all or no
- characters in a field. These functions, however, are not
- required.
-
- The minimal implementation also requires that the Output
- Line Width and Output Page Size Telnet options be
- supported.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 15
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- 4. Motivation
-
- The Telnet protocol was originally designed to provide a
- means for scroll-mode terminals, such as the standard
- teletype, to communicate with processes through the network.
- This was suitable for the vast majority of terminals and
- users at that time. However, as use of the network has
- increased into other areas, especially areas where the
- network is considered to provide a production environment
- for other work, the desires and requirements of the user
- community have changed. Therefore, it is necessary to
- consider supporting facilities that were not initially
- supported. This Telnet option attempts to do that for
- applications that require data entry terminals.
-
- This option in effect defines the Network Virtual Data Entry
- Terminal. Although the description of this option is quite
- long, this does not imply that the Telnet protocol is a poor
- vehicle for this facility. Data Entry Terminals are rather
- complex and varied in their abilities. This option attempts
- to support both the minimal set of useful functions that are
- either common to all or can be easily simulated and the more
- sophisticated functions supplied in some terminals.
-
- Unlike most real data entry terminals where the terminal
- functions are encoded into one or more characters of the
- native character set, this option performs all such controls
- within the Telnet subnegotiation mechanism. This allows
- programs that are intimately familiar with the kind of
- terminal they are communicating with to send commands that
- may not be supported by either the option or the
- implementation. In other words, it is possible to operate
- in a "raw" or at least "rare" mode using as much of the
- option as necessary.
-
- Although many data entry terminals support a variety of
- peripheral devices such as printers, cassettes, etc. it is
- beyond the scope of this option to entertain such
- considerations. A separate option should be defined to
- handle this aspect of these devices.
-
-
-
-
-
-
-
-
-
-
-
-
- 16
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- 5. Description
-
-
-
- G__e_n_e_r_a_l_N__o_t_e_s
-
- All implementations of this option are required to support a
- certain minimal set of the subcommands for this option.
- Section 3 contains a complete list of the subcommands in
- this minimal set. In keeping with the Telnet protocol
- philosophy that an implementation should not have to be able
- to parse commands it does not implement, every subcommand of
- this option is either in the minimal set or is covered by
- one of the facility subcommands. An implementation must
- "negotiate" with its correspondent for permission to use
- subcommands not in the minimal set before using them. For
- details of this negotiation process see the section below on
- facility subcommands.
-
- Most data entry terminals are used in a half duplex mode.
- (Although most DET's on the market can be used either as
- data entry terminals or as standard interactive terminals,
- we are only concerned here with their use as DET's.) When
- this option is used, it is suggested that the following
- Telnet options be refused: Echo, Remote Controlled
- Transmission and Echoing, and Suppress Go-Ahead. However,
- this option could be used to support a simple full duplex
- CRT based application using the basic cursor control
- functions provided here. For these cases, one or more of
- the above list of options might be required. (Support of
- sophisticated interactive calligraphic applications is
- beyond the scope of this option and should be done by
- another option or the Network Graphics Protocol.)
-
- In RFC 728, it was noted that a synch sequence can cause
- undesired interactions between Telnet Control functions and
- the data stream. A synch sequence causes data but not
- control functions to be flushed. If a control function
- which has an effect on the data immediately following it is
- present in the data stream when a synch sequence occurs, the
- control function will have its effect not on the intended
- data but on the data immediately following the Data Mark.
- The following DET subcommands are susceptible to this
- pitfall:
-
- CHAR INSERT
- DATA TRANSMIT
- FORMAT DATA
-
- The undesired interactions are best avoided by the receiver
-
-
- 17
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- of the synch sequence deleting these subcommands and all
- data associated with them before continuing to process the
- control functions. This implies that the Data Mark should
- not occur in the middle of the data associated with these
- subcommands.
-
- F__a_c_i_l_i_t_y_S__u_b_c_o_m_m_a_n_d_s
-
- These four subcommands are used by the User and Server
- implementations to negotiate the subcommands and attributes
- of the terminal that may be utilized. This negotiation can
- be viewed as the terminal (User Host) indicating what
- facilities are provided and the Server Host (or application
- program) indicating what facilities are desired.
-
- W__h_e_n_S__e_n_t:_ A Server Telnet implementation using the DET
- option must send a facility subcommand requesting the use of
- a particular subcommand or terminal attribute not in the
- minimal implementation before the first use of that
- subcommand or attribute. The User Telnet implementation
- should respond as quickly as possible with its reply.
- Neither the User nor Server are required to negotiate one
- subcommand at a time. Also, a Telnet implementation
- responding to a facility subcommand is not required to give
- permission only for that subcommand. It may send a format
- map indicating all facilities of that class which it
- supports. However, a Telnet implementation requesting
- facilities must send a facility subcommand before its first
- use of the subcommand regardless of whether earlier
- negotiations have indicated the facility is provided. The
- facility cannot be used until a corresponding facility
- subcommand has been received. There are no other
- constraints on when the facility subcommands may be sent.
- In particular, it is not necessary for an application to
- know at the beginning of a session all facilities that it
- will use.
-
- A__c_t_i_o_n_W__h_e_n_R__e_c_i_e_v_e_d:_ There are two possible actions that
- may be taken when a facility subcommand is received
- depending on whether the receiver is a requestor or a
- provider (User).
-
- Requestor: When a facility subcommand is received by a
- requestor and it is in the state of Waiting for a Reply, it
- should go into the state of Not Waiting. It should then
- take the facility map it had sent and form the logical
- intersection with the facility map received. (For the
- Intensity attribute, one should take the minimum of the
- number received and the number requested.) The result
- indicates the facilities successfully negotiated. Note: if
-
-
- 18
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- the receiver is not in the Waiting for Reply state, then
- this is the provider case described next.
-
- Provider: When a facility subcommand is received, it
- should send a facility subcommand with a facility map of the
- facilities it provides as soon as possible. It should then
- determine what new facilities it is providing for the
- Requestor by forming the logical intersection of the
- facility map received and the one sent.
-
- Note: Although in most cases the requestor will be the
- Server Host and the provider will be the User Host
- supporting the terminal, this distinction may not always be
- true.
-
- T__r_a_n_s_m_i_t_S__u_b_c_o_m_m_a_n_d_s
-
- There are two kinds of transmit subcommands: those used to
- request that data be sent to the requestor, and one to
- preface data sent to the requestor. The first kind allow
- the requestor to control when, from where and to some degree
- how much data is transmitted from the terminal. Their
- explanation is straightforward and may be found in Section
- 2.
-
- Data may be sent from the terminal as a result of two
- events: the user of the terminal caused the transmission or
- in response to a transmit subcommand. Some programs may
- wish to know from where on the screen the transmission
- began. (This is reasonable, since the terminal user may
- move the cursor around considerably before transmitting.)
- Other programs may not need such information. The DATA
- TRANSMIT subcommand is provided in case this function is
- needed. When used this subcommand prefaces data coming from
- the terminal. The parameters <x> and <y> give the screen
- coordinates of the beginning of the transmission. <x> must
- be less than or equal to M-1 and <y> must be less than or
- equal to N-1. It is assumed that all data between this DATA
- TRANSMIT and the next one starts at the coordinates given
- by the first subcommand and continues filling each line
- thereafter according to the constraints of the screen and
- the format effectors in the data. Thus an intelligent or
- sloppy user-host DET implementation (depending on your point
- of view) need only include a DATA TRANSMIT subcommand when
- the new starting point is different from the last ending
- point.
-
-
- 6. Sample Interaction
-
-
-
- 19
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- The nomenclature of RFC 726 will be used to describe this example. To
- quote that RFC:
-
- "S:" is sent from serving host to using host.
- "U:" is sent from using host to serving host.
- "T:" is entered by the terminal user.
- "P:" is printed on the terminal.
-
- Text surrounded by square brackets([]) is commentary. Text
- surrounded by angle brackets (<>) is to be taken as a single unit.
- E.g, carriage return is <cr>, and the decimal value 27 is
- represented <27>.
-
- We assume that the user has established the Telnet connection,
- logged on, and an application program has just been started either
- by the user directly or through a canned start up procedure. The
- presentation on the page is meant to merely group entities together
- and does not imply the position of message boundaries. One should
- assume that any part of the dialogue may be sent as one or many
- messages. The first action of the program or Telnet is to
- negotiate the DET option:
-
- S: <IAC><DO><DET>
-
- U: <IAC><WILL><DET>
-
- S:<IAC><DO><OUTPUT PAGE SIZE> [First negotiate the screen
- size. In this case we are
- U:<IAC><WILL><NAOP> asking the user the size of the
- terminal. This could have been
- U:<IAC><SB><NAOP><DR><25><IAC><SE> done before the DET option was
- negotiated.]
- S:<IAC><SB><NAOP><DS><0><IAC><SE>
-
- S:<IAC><DO><OUTPUT LINE WIDTH>
-
- U:<IAC><SB><NAOL><DR><80><IAC><SE> [Defines the screen to be 25
- lines by 80 characters.
- S:<IAC><SB><NAOL><DS><0><IAC><SE> The server may use this
- information when formatting
- the screen.]
- S:<IAC><SB><DET><FORMAT FACILITIES> [Now set the terminal attributes.]
- <Repeat><Protection, 3 Levels
- Intensity><IAC><SE>
-
- U:<IAC><SB><DET><FORMAT FACILITIES>
- <Repeat, Blinking><Protection, 3
- Levels Intensity><IAC><SE>
-
- S:<IAC><SB><DET><ERASE SCREEN><IAC><SE> [Erase the screen and
-
-
- 20
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- start sending the form.]
- <IAC><SB><DET><FORMAT DATA>
- <Protection=1, Intensity=1><0>
- <5><IAC><SE>Name:
-
- <IAC><SB><DET><MOVE CURSOR><0><1>
- <IAC><SE>
-
- <IAC><SB><DET><FORMAT DATA>
- Protection=1, Intensity=1><0>
- <8><IAC><SE>
-
- Address:
- <IAC><SB><MOVE CURSOR><0><4><IAC>
- <SE>
-
- <IAC><SB><DET><FORMAT DATA>
- Protection=1, Intensity=1><0>
- <17><IAC><SE>
- Telephone number:
-
- <IAC><SB><DET><MOVE CURSOR><32><4>
- <IAC><SE>
-
- <IAC><SB><DET><FORMAT DATA>
- Protection=1, Intensity=1><0>
- <24><IAC><SE>
- Social Security Number:
-
- <IAC><SB><DET><FORMAT DATA> [Establish a field that doesn't
- <Protection=1, Intensity=7> display what is typed into it.]
- <0><11><IAC><SE>
-
- <IAC><SB><DET><MOVE CURSOR><32>
- <5><IAC><SE>
-
- <IAC><SB><DET><FORMAT FACILITIES> [Get permission to use Blinking
- <Blinking><0><IAC><SE> Attribute.]
-
- U:<IAC><SB><DET><FORMAT FACILITIES>
- <Repeat, Blinking><Protection,
- 3 Levels Intensity><IAC><SE>
-
- S:<IAC><SB><DET><FORMAT DATA>
- <Blinking=1, Protection=1,
- Intensity=1><0><29><IAC><SE>
-
- Your SSN will not be printed.
-
- <IAC><SB><DET><HOME><IAC><SE>
-
-
- 21
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- <IAC><GA>
-
- The previous exchange has placed a form on the screen that looks like:
-
- Name:
- Address:
-
-
- Telephone Number: Social Security Number:
- "Your SSN will not be printed."
-
- where the quoted string is blinking.
-
- The terminal user is now free to fill in the form provided. He
- positions the cursor at the beginning of the first field (this usually
- is done by hitting the tab key) and begins typing. We do not show this
- interaction since it does not generate any interaction with the User
- Telnet program or the network. After the terminal user has completed
- filling in the form, he strikes the transmit key to send the unprotected
- part of the form, but first the User Telnet program negotiates the Byte
- Macro Option to condense the Field Separator subcommand:
-
- U:<IAC><DO><BM> [Negotiate Byte Macro Option.]
-
- S:<IAC><WILL><BM> [Define decimal 166 to be the
- Field Separator subcommand
- U:<IAC><SB><BM><DEFINE> (see Appendix 3)]
- <166><6><IAC SB DET FIELD
- SEPARATOR IAC SE><IAC><SE>
-
- S:<IAC><SB><BM><ACCEPT><166> [The server accepts the macro.]
- <IAC><SE>
-
-
- U:<IAC><SB><DET><DATA TRANSMIT><0><6>
- <IAC><SE>
- John Doe <166> 1515 Elm St., Urbana, Il 61801
- <166> 217-333-9999 <166> 123-45-6789 <166>
-
- S:<IAC><SB><DET><ERASE SCREEN><IAC><SE>
- Thank you.
-
- And so on.
-
-
-
-
-
-
-
-
-
- 22
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
-
-
-
-
- Appendix 1 - Subcommands, opcodes and syntax
-
-
-
- 1 EDIT FACILITIES <Facilty map>
- 2 ERASE FACILITIES <Facility map>
- 3 TRANSMIT FACILITIES <Facility map>
- 4 FORMAT FACILITIES <Facility map 1> <Facility map 2>
- 5 MOVE CURSOR <x> <y>
- 6 SKIP TO LINE <y>
- 7 SKIP TO CHAR <x>
- 8 UP
- 9 DOWN
- 10 LEFT
- 11 RIGHT
- 12 HOME
- 13 LINE INSERT
- 14 LINE DELETE
- 15 CHAR INSERT
- 16 CHAR DELETE
- 17 READ CURSOR
- 18 CURSOR POSITION <x><y>
- 19 REVERSE TAB
- 20 TRANSMIT SCREEN
- 21 TRANSMIT UNPROTECTED
- 22 TRANSMIT LINE
- 23 TRANSMIT FIELD
- 24 TRANSMIT REST OF SCREEN
- 25 TRANSMIT REST OF LINE
- 26 TRANSMIT REST OF FIELD
- 27 DATA TRANSMIT <x><y>
- 28 ERASE SCREEN
- 29 ERASE LINE
- 30 ERASE FIELD
- 31 ERASE REST OF SCREEN
- 32 ERASE REST OF LINE
- 33 ERASE REST OF FIELD
- 34 ERASE UNPROTECTED
- 35 FORMAT DATA <format map>
- 36 REPEAT <count><char>
- 37 SUPPRESS PROTECTION <negotiation>
- 38 FIELD SEPARATOR
- 39 FN <code>
- 40 ERROR <cmd><error code>
-
-
-
-
- 23
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
-
-
-
-
-
- Appendix 2 - Error Codes
-
-
-
- 1 Facility not previously negotiated.
- 2 Illegal subcommand code.
- 3 Cursor Address Out of Bounds.
- 4 Undefined FN value.
- 4 Can't negotiate acceptable line width.
- 5 Can't negotiate acceptable page length.
- 6 Illegal parameter in subcommand.
- 7 Syntax error in parsing subcommand.
- 8 Too many parameters in subcommand.
- 9 Too few parameters in subcommand.
- 10 Undefined parameter value
- 11 Unsupported combination of Format Attributes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 24
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
-
-
-
-
-
-
- Appendix 3 - Use of the Byte Macro Option
-
-
-
-
- One of the major drawbacks of the DET option is that because the
- functions are encoded as Telnet option subnegotiations a fairly
- high overhead is incurred. A function like Character Insert which
- is encoded as a single byte in most terminals requires six bytes in
- the DET option. Originally the only other solution that would have
- accomplished the same transparency that the use of subcommands
- provides would have been to define additional Telnet control
- functions. However, since this would entail modification of the
- Telnet protocol itself, it was felt that this was not a wise
- solution. Since then the Telnet Byte Macro Option (RFC 729) has
- been defined. This option allows the user and server Telnets to
- map an arbitrary character string into a single byte which is then
- transferred over the net. Thus the Byte Macro Option provides the
- means for implementations to avoid the overhead for heavily used
- subcommands. The rest of this appendix suggests how the Byte Macro
- Option should be applied to the DET option.
-
- In keeping with the specification of the Byte Macro Option, macro
- bytes will be chosen from the range 128 to 239. For the DET
- option, it is suggested that macro bytes be chosen by adding the
- subcommand code to 128. In addition, an unofficial DET subcommand
- might be defined indicating that each side was willing to support
- macro bytes for all subcommands (but not necessarily support all of
- the subcommands themselves) according to this algorithm. This
- subcommand would be:
-
- IAC SB DET DET-MACRO <negotiation> IAC SE
- subcommand code: 254
-
- where <negotiation> may have the values of the Telnet option
- negotiation:
- 251 WILL
- 252 WONT
- 253 DO
- 254 DONT
-
- This subcommand is sent by a Telnet implementation to indicate its
- willingness to adopt byte macros for all of the DET subcommands
- according to the following algorithm:
-
-
- 25
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
-
- The macro byte for subcommand i will be i+128 and will represent
- the following string for parameterless subcommands:
-
- IAC SB DET <subcommand code> IAC SE
-
- and the following string for subcommands with parameters:
-
- IAC SB DET <subcommand code>
-
- The default setting for this subcommand is that the macros are
- not in effect, in other words,
-
- IAC SB DET DET-MACRO WONT IAC SE
- IAC SB DET DET-MACRO DONT IAC SE
-
- Negotiation of this subcommand follows the same rules as
- negotiations of the Telnet options.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 26
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
-
-
-
-
-
-
- References
-
-
-
- 1. ADM-1 Interactive Display Terminal Operator's Handbook
- Lear-Siegler, Inc. 7410-31.
-
- 2. ADM-Interactive Display Terminal Operator's Handbook
- Lear-Siegler, Inc. EID, 1974.
-
- 3. Burroughs TD 700/800 Reference Manual, Burroughs Corp., 1973
-
- 4. Burroughs TD 820 Reference Manual, Burroughs Corp. 1975.
-
- 5. CC-40 Communications Station: General Information Manual.
- Computer Communication, Inc. Pub. No. MI-1100. 1974.
-
- 6. Crocker, David. "Telnet Byte Macro Option," RFC 729, 1977.
-
- 7. Data Entry Virtual Terminal Protocol for Euronet, DRAFT, 1977.
-
- 8. Day, John. "A Minor Pitfall in the Telnet Protocol,"
- RFC 728, 1977.
-
- 9. Hazeltine 2000 Desk Top Display Operating Instructions.
- Hazeltine IB-1866A, 1870.
-
- 10. How to Use the Consul 980: A Terminal Operator's Guide
- and Interface Manual. Applied Digital Data Systems, Inc.
- 98-3000.
-
- 11. How to Use the Consul 520: A Terminal Operator's Guide
- and Interface Manual. Applied Digital Data Systems, Inc.
- 52-3000.
-
- 12. Honeywell 7700 Series Visual Information Projection (VIP)
- Systems: Preliminary Edition. 1973.
-
- 13. An Introduction to the IBM 3270 Information Display System.
- IBM GA27-2739-4. 1973.
-
- 14. Naffah, N. "Protocole Appareil Virtuel type Ecran"
- Reseau Cyclades. TER 536. 1976.
-
-
-
- 27
-
- John Day Data Entry Terminal Option
- June 27,1977 NIC 40652
- RFC 731
-
-
- 15. Postel, Jon and Crocker, David. "Remote Controlled
- Transmission and Echoing Telnet Option", RFC 726
- NIC 39237, Mar. 1977.
-
- 16. Schicker, Peter. "Virtual Terminal Protocol (Proposal 2).
- INWG Protocol Note #32., 1976.
-
- 17. UNISCOPE Display Terminal : Programmer Reference . Sperry-
- Univac UP-7807 Rev. 2, 1975.
-
- 18. Universal Terminal System 400: System Description. Sperry-
- Univac UP-8357, 1976.
-
- 19. Walden, David C. "Telnet Output Line Width Option."
- NIC # 20196, 1973, also in ARPANET Protocol Handbook, 1976.
-
- 20. Walden, David C. "Telnet Output Page Size" NIC # 20197,
- 1973, also in ARPANET Protocol Handbook, 1976.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 28
-